//这题也是我自己找规律做的，而且还感觉是对的，开心！ 
#include <iostream>
using namespace std;
const int mod = 1e9+7;
long long pow(long long m,long long n){
	if(n==0)
		return 1%mod;
	long long t = pow(m,n/2);
	t = t*t%mod;
	if(n&1)
		t = t*m%mod;
	return t;
	
}int main(){
	long long n,m,x,y;
	cin>>n>>m;
	x = n/2,y;
	y = n-x;
	cout<<(pow(m,n)+mod-((pow(m,x)*pow(m-1,y))%mod))%mod;
	return 0;
	
}